/***********************************************************************************
Copy right:	    Coffee Tech.
Author:         jiaoyue
Date:           2019.7.30
Description:    类型重定义
***********************************************************************************/
#ifndef __PUB_DEFINE_H
#define __PUB_DEFINE_H

#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <assert.h>

// //共享内存中结构体、共用体
// union val_t
// { 
//     int b_val;  //bool类型存储空间 1
//     int i_val;   //整形值存储空间 2
//     float f_val;  //浮点值存储空间 3
// };

// struct date_node
// {
// 	int key;  //唯一键值
// 	int type;  //数据点类型
//     int dev_type;  //数据点属于哪个设备，根据网关支持的设备自行定义
// 	union val_t old_val;  //变化上报后需要更新旧值
//     union val_t new_val;  //从共享内存取出最新数据，放到new_val中
//     int ret;  //默认为-1，采集成功后设置为0，采集失败再置-1
// };

// //消息队列结构体
// struct msgbuf
// {
//     long mtype;
//     int key;
//     char mdata[256];
// };
// 设备key范围定义
#define MODBUS_KEY_MIN 101
#define MODBUS_KEY_MAX 104
#define STM32_KEY_MIN 301
#define STM32_KEY_MAX 304

#define MAX_PROC_NAME_SZ    32

#define MAX_PATH_LEN 256  //最大路径长度

#ifdef BOOL
#undef BOOL
#endif

#ifdef FALSE
#undef FALSE
#endif

#ifdef TRUE
#undef TRUE
#endif

#define BOOL    int
#define FALSE   (0)
#define TRUE    (!FALSE)

#define KB 1024
#define MB (1024*KB)
#define GB (1024*MB)

#define UNUSED(x) (void)x;  //仅仅为了消除警告用，可解决未定义变量

#include <stdint.h>

#define uint8  uint8_t
#define uint16 uint16_t
#define uint32 uint32_t

#define int8  int8_t
#define int16 int16_t
#define int32 int32_t

#define SLEEP_MS(ms) usleep(ms*1000)

#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))

#endif //__PUB_DEFINE_H
